#!/bin/bash
#Comando Initializer
#
#Descripcion
#Es el primero en orden de ejecucion. Se dispara manualmente.
#El proposito de este comando es preparar el entorno de ejecucion del ambiente.
#El proceso se inicia con el aseuramiento de la disponibilidad de la informacion para llevar adelante el proceso total.
#Es indispensable contar con el archivo de configuracion, los comandos, archivos maestros y tablas con los permisos adecuados.
#Continua con la asignacion de valor a un conjunto de variables de ambiente y luego ofrece arrancar el comando de recepcion de novedades.
#

################## FUNCIONES AUXILIARES
#ParsearValor(){
#	aux=$(grep '^$1' $CONFIGFILE | awk -F"=" '{print $2}')
#	echo $aux
#}

UnSetVars(){
	unset BINDIR
	unset MAEDIR
	unset NOVEDIR
	unset ACEPDIR
	unset INFODIR
	unset RECHDIR
	unset LOGDIR
}


################# PROGRAMA PRINCIPAL

#Inicio el Log
COMANDO="Initier.sh"


#Verifico que exista el Installer.conf
CONFIGFILE="./conf/Deployer.conf"

echo "Inicio del script de inicializacion++++++++++++++++";
echo $CONFIGFILE;
echo "++++++++++++++++++++++++++++++++++++++++";
echo " directorio actual " `pwd`;
if [ ! -f $CONFIGFILE ]; then
	Logging.sh $COMANDO "No se encontro el $CONFIGFILE saliendo." "E"
	echo "No existe el archivo  `basename $CONFIGFILE`";
	echo "Reinstale por favor.";
	exit 1
fi



#Verifico si el ambiente ya fue inicializado
if [[ ! -z "$AMBIENTEINIT" ]]; then
	Logging.sh $COMANDO "Ambiente ya se encuentra inicializado. Si quiere reiniciar termine su sesion e ingrese nuevamente." "W"
	echo "Ambiente ya se encuentra inicializado. Si quiere reiniciar termine su sesion e ingrese nuevamente."
	sleep 5;
	exit 1
fi



export GRUPO=$(grep '^GRUPO' $CONFIGFILE | awk -F"=" '{print $2}')
export BINDIR="$(grep '^BINDIR' $CONFIGFILE | awk -F"=" '{print $2}')"
export MAEDIR="$(grep '^MAEDIR' $CONFIGFILE | awk -F"=" '{print $2}')"
export NOVEDIR="$(grep '^NOVEDIR' $CONFIGFILE | awk -F"=" '{print $2}')"
export ACEPDIR="$(grep '^ACEPDIR' $CONFIGFILE | awk -F"=" '{print $2}')"
export REPODIR="$(grep '^REPODIR' $CONFIGFILE | awk -F"=" '{print $2}')"
export RECHDIR="$(grep '^RECHDIR' $CONFIGFILE | awk -F"=" '{print $2}')"
export LOGDIR="$(grep '^LOGDIR' $CONFIGFILE | awk -F"=" '{print $2}')"
#Cargo las demas variables del conf
export LOGEXT=$(grep '^LOGEXT' $CONFIGFILE | awk -F"=" '{print $2}')
export LOGSIZE=$(grep '^LOGSIZE' $CONFIGFILE | awk -F"=" '{print $2}')
export DATASIZE=$(grep '^DATASIZE' $CONFIGFILE | awk -F"=" '{print $2}')
export SLEEPTIMECONF=$(grep 'SLEEPTIMECONF' $CONFIGFILE | awk -F"=" '{print $2}')



CONFDIR="$GRUPO/conf";

#Logueo aca porque antes no existirian las variables.
#./Logging.sh $COMANDO "Comando Initializer Inicio de ejecucion." "I"

#Lista de las variables de ambiente correspondientes a directorios
LISTAVARS=($MAEDIR $NOVEDIR $ACEPDIR $REPODIR $RECHDIR $LOGDIR $BINDIR)

#Verifico que existan los directorios y archivos obligatorios.





for i in ${LISTAVARS[*]}
do
	if [ ! -d $i ]; then
		$BINDIR/Logging.sh $COMANDO "Directorio $i no hallado, saliendo." "E"
		echo "Falta el directorio $i";
		echo "Por favor reinstale";
		UnSetVars
		exit 1
	else
		if [ ! -r $i ]; then
			chmod u+r $i
			$BINDIR/Logging.sh $COMANDO "Permiso de lectura agregado al directorio $i ." "I"
			echo "Permiso de lectura agregado a $i"
		fi
		if [ ! -w $i ]; then
			chmod u+w $i
			$BINDIR/Logging.sh $COMANDO "Permiso de escritura agregado al directorio $i ." "I"
			echo "permiso de escritura agregado a $i"
		fi
		$BINDIR/Logging.sh $COMANDO "Directorio: $i OK" "I"
		echo "Directorio: $i OK"
	fi
done

echo `ls -l $BINDIR`;

$BINDIR/Logging.sh $COMANDO "`ls -l $BINDIR`" "I"


LISTAARCHIVOS=("$MAEDIR/bancos.dat" "$MAEDIR/camaras.dat" "$MAEDIR/pjn.dat")

for archivo in ${LISTAARCHIVOS[*]}
do
        if [ ! -f $archivo ]; then
		$BINDIR/Logging.sh $COMANDO "Falta el archivo `basename $archivo`. Saliendo." "E"
		$BINDIR/Logging.sh $COMANDO "Realizar una reinstalacion de la aplicacion. Saliendo." "E"
		UnSetVars
		exit 1
	else
		#Verifico que posean permisos de lectura y escritura
		echo "Archivo: $archivo OK";
		$BINDIR/Logging.sh $COMANDO "Archivo: $archivo OK" "I"
		if [ ! -r $archivo ]; then
			chmod u+r $archivo
			$BINDIR/Logging.sh $COMANDO "Permiso de lectura agregado al archivo $archivo ." "W"
			echo "Permiso de lectura agregado a: $archivo"
		fi
		if [ ! -w $archivo ]; then
			chmod u+w $archivo
			$BINDIR/Logging.sh $COMANDO "Permiso de lectura agregado al archivo $archivo ." "W"
			echo "Permiso de escritura agregado a: $archivo"
		fi
	fi
done
#
#Pregunto si quiere arrancar el Listener
while true ; do
	read -p "Quiere arrancar el Recept ahora? (SI - NO): " resp;
	if [ ! -z $(echo $resp | grep '^[Ss][Ii]$') ]; then
		resultado=0;
		break;
	elif [ ! -z $(echo $resp | grep '^[Nn][Oo]$') ]; then			
		resultado=1;
		break;
	else
		echo "Debes responder Si - No";
	fi
done

#Agrego el directorio BIN al PATH
export PATH="$PATH:$BINDIR"
export AMBIENTEINIT=1


$BINDIR/Logging.sh $COMANDO "Sistema INICIALIZADO" "I"
echo "Directorio de configuracion: $CONFDIR"
echo "Directorio de ejecutables: $BINDIR"
for  comando in `ls  $BINDIR`
do 
  echo $comando;
done 
echo "Directorio de maestros y tablas: $MAEDIR"
echo "Directorio de novedades: $NOVEDIR"
echo "Directorio de aceptados: $ACEPDIR"
echo "Directorio de informes: $INFODIR"
echo "Directorio de rechazados: $RECHDIR"
echo "Directorio de logs: $LOGDIR/<comando>$LOGEXT"
echo "Listado de variables:"
$BINDIR/Logging.sh $COMANDO "Listado de variables:" "I"
echo "LOGEXT=$LOGEXT"
 $BINDIR/Logging.sh $COMANDO "LOGEXT=$LOGEXT" "I"
echo "LOGSIZE=$LOGSIZE"
$BINDIR/Logging.sh $COMANDO  "LOGSIZE=$LOGSIZE" "I"
echo "DATASIZE=$DATASIZE"
$BINDIR/Logging.sh $COMANDO  "DATASIZE=$DATASIZE" "I"

if [[ $resultado = "0" ]]; then
	#Veo si ya se encuentra ajecutnadose el Listener
	pid=$(obtpid.sh "Recept.sh")
	echo $pid
	if [ ! -z $pid ]; then
		echo "Recept ya se encuentra ejecutandose bajo el PID: $pid";
	else
		echo "Arrancando Recept...";
        Recept.sh &
        pid=$(obtpid.sh "Recept.sh")
        echo "Recept corriendo bajo el id: $pid"
        ./Logging.sh $COMANDO "Recept corriendo bajo el id: $pid" "I"
	fi
else
	echo "No arrancar ahora."
	echo "Para inciar ejecute el comando Debut de la siguiente forma: Debut.sh Recept.sh -bg"
fi




